Watt's Approximate Straight-Line Linkage

To move the linkage manually move the BLUE point.  To automate the movement give the Speed slider a non-zero value. If this fails to work (which can happen after clicking the  reset icon) then right-click on the BLUE point and select "Animation on" or alternatively just reload the page.
Move the BE:EC slider to alter the locus of point E

BE:EC

Path

B

A

C

D

E

Locus of E

Observation

4th Bar

ε_L = 0.6440264939859076 rad (slider from 0*° to 100*°, step 0.1*°)
b = 17.8 (slider from 0 to 25, step 0.1)
h = 9.9 (slider from 0 to 25, step 0.1)
a = 10.2 (slider from 0 to 25, step 0.1)
c = 9 (slider from 0 to 25, step 0.1)
I: (2 * a + b, h + c)
A: (a + b, h + c)
ε_U = 0.6492624817418906 rad (slider from 0 to 90*°, step 0.1*°)
I' = Rotate(I, ε_U - 30° + π - atan((b + c) / a) + atan(c / (a + b)), A)
I'_1 = Rotate(I, -(ε_L - 30° + π - atan(c / (b + a)) - atan((b + c) / a)), A)
k_1 = CircleArc(A, I', I'_1)
c_1 = Circle(A, a)
A_2 = (0, 0)
D: (0, h)
d = Circle(D, b)
B = Point(k_1)
f = Circle(B, c)
Speed = 0 (slider from -10 to 10, step 0.1)
C = Intersect(d, f, 2)
b_1 = Segment(D, C)
g = Segment(B, C)
i = Segment(B, A)
C_2: (a + b, 0)
α = Angle(I, A, I')
β = Angle(I'_1, A, I)
k = 0.28 (slider from 0 to 1, step 0.01)
E = Dilate(C, k, B)
loc1 = Locus(E, B)
e = Circle(A, 1)
p = Circle(D, 1)
q = Circle(A_2, 1)
r = Circle(C_2, 1)
F: (1, h)
J, K = Intersect(r, xAxis)
l = OrthogonalLine(F, xAxis)
m = OrthogonalLine(J, xAxis)
n = OrthogonalLine(K, xAxis)
L, M = Intersect(q, yAxis)
s = OrthogonalLine(M, yAxis)
t = OrthogonalLine(L, yAxis)
O: (a + b + 1, -1)
P: (a + b + 1, h + c)
Q: (a + b - 1, h + c)
U: (a + b - 1, 1)
T = (1, 1)
N = (-1, -1)
e_1 = CircleSector(A, P, Q)
v = false
W: (0, h)
Z = Intersect(e_1, i, 1)
A_1 = Intersect(e_1, i, 1)
B_1 = Intersect(e_1, i, 1)
C_1 = Intersect(e_1, i, 1)
D_1 = Intersect(e_1, i, 1)
E_1 = Intersect(e_1, i, 1)
F_1 = Intersect(e_1, i, 1)
G_1 = Intersect(e_1, i, 1)
H_1 = Intersect(e_1, i, 1)
I_1: (a + b, h + c)
J_1 = Intersect(i, g)
K_1 = Intersect(b_1, g)
H'_1 = Dilate(C, k, B)
BE = Distance(B, E)
EC = Distance(E, C)
DC = Distance(D, C)
AB = Distance(A, B)
BEdivEC: BE / EC
text6: "$ \frac{BE}{EC} = \frac{" + (LaTeX[BE]) + "}{" + (LaTeX[EC]) + "} =" + (LaTeX[BEdivEC]) + " $"
CDdivBA: DC / AB
text7: "\frac{CD}{BA} =\frac{" + (LaTeX[DC]) + "}{" + (LaTeX[AB]) + "} = " + (LaTeX[CDdivBA]) + ""
w = false
z = false
a_1 = OrthogonalLine(C_2, xAxis)
f_1 = OrthogonalLine(M, xAxis)
H: (0, h + 1)
L_1: (a + b, h + c + 1)
R_1: (-1, h)
poly1, r_1, n_1, o, p_1, q_1, u, t_1, f_2 = Polygon(R_1, N, O, P, Q, U, T, F)
G = Point(o)
R = Point(q_1)
d_1 = CircleArc(A, G, R)
g_1 = CircleArc(D, F, R_1)
j = Segment(D, A)
h_1 = false